#!/usr/bin/env python
# -*- coding: latin-1 -*-

import gtk
import os, sys
import string

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

# VARIABLES POR DEFECTO

calidad = "80"

def alerta (cadena):
	dialogo = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, cadena)
	dialogo.run()
	dialogo.destroy()

def ClickAceptar(widget):
	archivos = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("\n")
	for archivo in archivos:
		if archivo != "":
			if os.path.isdir(archivo):
				ProcesarDirectorio(archivo)
			else:
				ProcesarImagen(archivo)

	alerta("El proceso ha finalizado satisfactoriamente")
	gtk.main_quit()

def ProcesarDirectorio(directorio):
	archivos = os.listdir(directorio)
	for archivo in archivos:
		archivo = directorio + "/" + archivo
		if os.path.isdir(archivo):
			ProcesarDirectorio(archivo)
		else:
			ProcesarImagen(archivo)

def ProcesarImagen(archivo):
	program = "convert"

	if getExtension(archivo) == "JPG" or getExtension(archivo) == "PNG":

		arguments = ["-quality", entryCalidad.get_text(), archivo, archivo]
		os.spawnvp(os.P_WAIT, program, (program,) +  tuple(arguments))


def getExtension(archivo):
	trozos = archivo.split(".")
	return string.upper(trozos[len(trozos)-1])

def ClickCancelar(widget):
	gtk.main_quit()


# PROGRAMA

if Process.verifyCommands("convert%ImageMagick")==False:
	sys.exit()

w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_title("Reducir calidad")
w.set_border_width(20)

w.connect("destroy", gtk.mainquit) 
#l = gtk.Label(os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'])

# tabla de la miniatura

tableMin = gtk.Table(2, 1, False)
tableMin.set_border_width(10)

tableMin.set_row_spacings(8)
tableMin.set_col_spacings(8)


lCalidad = gtk.Label("Calidad:")

tableMin.attach(lCalidad, 0, 1, 0, 1)

entryCalidad = gtk.Entry()
entryCalidad.set_text(calidad)

tableMin.attach(entryCalidad, 1, 3, 0, 1)

# botones

aligBotones = gtk.Alignment(1.0, 0.0)
boxBotones = gtk.HBox(True, 4)

bAceptar = gtk.Button("Aceptar", gtk.STOCK_OK)

bAceptar.connect("clicked", ClickAceptar)

boxBotones.pack_start(bAceptar, False, False, 0)

bCancelar = gtk.Button("Cancelar", gtk.STOCK_CANCEL)

bCancelar.connect("clicked", ClickCancelar)

boxBotones.pack_start(bCancelar, False, False, 0)

aligBotones.add(boxBotones)

tableMin.attach(aligBotones, 1, 2, 4, 5)

w.add(tableMin)
w.show_all()
gtk.main()
